﻿#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<windows.h>
#include<time.h>

//#include<stdio.h>
//int main()
//{
//	printf("\a");
//	return 0;
//}

//int main()
//{
//	int num = 0;
//	while (scanf("%d", &num)==1)
//	{
//		if (num % 2 == 1)
//		{
//			printf("%d是奇数\n", num);
//		}
//		else
//		{
//			printf("%d不是奇数\n", num);
//		}
//	}
//	return 0;
//}            

//int main()
//{
//	int i = 0;
//	for (i = 1; i < 100; i++)
//	{
//		
//		if (i % 2 == 1)
//		{
//            printf("%d ", i);
//		}
//		
//	}
//	return 0;
//	
//}

//int main()
//{
//	int ch = 0;
//	while ((ch = getchar()) != EOF)
//	{
//		putchar(ch);
//	}
//	return 0;
//}

//int main()
//{
//	int password[20] = { 0 };
//	printf("请输入:");
//	scanf("%d", password);
//	//way1：getchar();
//	//way2
//	int sum = 0;
//	while ((sum = getchar()) != '\n')
//	{
//		;
//	}
//	printf("请确认密码(N/Y):");
//	int tmp = getchar();
//	if ('Y' == tmp)
//		printf("确认成功\n");
//	else
//		printf("确认失败\n");
//	return 0;
//}

//int main()
//{
//	int ch = '\0';
//	while ((ch = getchar() != EOF))
//	{
//		if (ch < '0' || ch>'9')
//			continue;
//		putchar(ch);
//	}
//	return 0;
//}

//int main()
//{
//	int i = 0;
//	for (i = 1; i <= 10;)
//	{
//		if (5 == i)
//			continue;
//		printf("%d ", i);
//		i++;
//	}
//	return 0;
//}

//int main()
//{
//	int i = 0;
//	int j = 0;
//	int count = 0;
//	for (i = 0; i < 10; i++)
//	{
//		for (j = 0; j < 10; j++)
//		{
//			
//			count++;
//			printf("hehe %d\n", count);
//		}
//	}
//	printf("%d\n", count);
//	return 0;
//}

//int main()
//{
//	int x, y;
//	for (x = 0, y = 0; x < 2 && y < 5; ++x, y++)
//	{
//		printf("hehe\n");
//	}
//	return 0;
//}

//int main()
//{
//	int i = 0;
//	int k = 0;
//	for (i = 0, k = 0; k == 0; i++, k++)
//		k++;
//	return 0;
//}

//int main()
//{
//	int i = 0;
//	do
//	{
//		printf("%d ", i);
//		i++;
//	} while (1);
//		return 0;
//}

//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	int i = 0;
//	int ret = 1;
//	for (i = 1; i <= n; i++)
//	{
//		ret = ret * i;
//	}
//	printf("%d\n", ret);
//	return 0;
//}

////int main()
//{
//	int i = 0;
//	//先产生1~3的数字
//	int j=0;
//	int ret = 1;
//	int sum = 0;//qiu he
//	for (i = 1; i <= 3; i++)
//	{
//		ret = 1;
//		for (j = 1; j <= i; j++)
//		{
//			ret = ret * j;
//		}
//		sum = sum + ret;
//
//	}
//	printf("%d\n", sum);
//	return 0;
//}

//int main()
//{
//	int n = 0;
//	int ret = 1;
//	int sum = 0;
//	for (n = 1; n <= 3; n++)
//	{
//		ret = ret * n;
//		sum = sum + ret;
//	}
//	printf("%d\n", sum);
//	return 0;
//}

//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	int k = 0;
//	scanf("%d", &k);
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	int left = 0;
//	int right = sz - 1;
//	while (left<=right)
//	{
//		//int mid = (left + right) / 2;
//		int mid = left + (right - left) / 2;
//		if (arr[mid] < k)
//		{
//			left = mid + 1;
//		}
//		else if (arr[mid] > k)
//		{
//			right = mid - 1;
//		}
//		else
//		{
//			printf("找到了，下标是 %d\n", mid);
//			break;
//		}	
//	}
//        if (left > right)
//		{
//			printf("没找到\n");
//		}
//}

//写一个程序I am wkm！！！从########变成
//int main()
//{
//	char arr1[] = "hellobitinhao";
//	char arr2[] = "#############";
//	int left = 0;
//	int right = strlen(arr1) - 1;
//	while (left<=right)
//	{
//		arr2[left] = arr1[left];
//		arr2[right] = arr1[right];
//		printf("%s\n", arr2);
//		Sleep(1000);
//		system("cls");
//		left++;
//		right--;
//
//	}
//	printf("%s\n", arr2);
//	return 0;
//
//}

//输入一个密码，确认Y/N三次如果全输入错误，就退出程序
//int main()
//{
//	char password[20] = { 0 };
//	int i = 0;
//	for (i = 0; i < 3; i++)
//	{
//		printf("请输入密码>:");
//		scanf("%s", password);//假设密码就是abcdef
//		if ((strcmp(password, "abcdef")) == 0)
//		{
//			printf("输入正确\n");
//			break;
//		}
//		else
//		{
//			printf("输入错误请重新输入\n");
//		}
//	}
//
//	if (i == 3)
//	{
//		printf("三次密码均输入错误，退出程序\n");
//	}
//	return 0;
//}


//void menu()
//{
//	printf("******  1.play      *******\n");
//	printf("******  0.exit     ********\n");
//	printf("********  *****************\n");
//	printf("********* ****************\n");
//
//}
//
//void play()
//{
//	int ret = rand() % 100 + 1;
//	int guess = 0;
//	printf("请输入一个数字: ");
//	
//	while ((scanf("%d", &guess))==1)
//	{
//		if (guess > ret)
//		{
//			printf("猜大了");
//		}
//		else if (guess < ret)
//		{
//			printf("猜小了");
//		}
//		else
//		{
//			printf("恭喜你猜对了\n");
//			break;
//		}
//	}
//}
//int main()
//{
//	int choose = 0;
//	srand((unsigned int)time(NULL));
//	do
//	{
//		menu();
//		printf("请选择>:");
//		scanf("%d", &choose);
//		switch(choose)
//		{
//		case 1:
//			printf("玩游戏\n");
//			play();
//			break;
//		case 0:
//			printf("退出游戏\n");
//			break;
//		default:
//			printf("选择错误，请重新选择\n");
//			break;	
//		}
//	} while (choose);
//}

//一个关机程序，打开后电脑会在1min内关机，输入我是猪，就能关闭
//int main()
//{
//	char arr[20] = { 0 };
//	system("shutdown -s -t 60");
//again:
//	printf("请注意，你的电脑将在1min之后自动关机，输入我是猪即可解除关机\n");
//	scanf("%s\n", arr);
//	if ((strcmp(arr, "我是猪")) == 0)
//	{
//		system("shutdown -a");
//		printf("你的电脑已经解除关机\n");
//	}
//	else
//	{
//		goto again;
//	}
//}

//int main()
//{
//	char password[20] = { 0 };
//	system("shutdown -s -t 60");
//	printf("请注意，你的电脑将在1min之后自动关机，输入我是猪即可解除关机\n");
//	scanf("%s\n", password);
//	while (1)
//	{
//		if ((strcmp(password, "我是猪")) == 0)
//		{
//			printf("已经解除关机程序\n");
//			system("shutdown -a");
//			break;
//		}
//	}
//	return 0;
//}

//int main()
//{
//	int a = 0;
//	int b = 0;
//	while ((scanf("%d %d", &a, &b))==2)
//	{
//		if (a > b)
//		{
//			printf("%d 大于 %d\n", a, b);
//		
//		}
//		else if (a < b)
//		{
//			printf("%d 小于 %d\n", a, b);
//		}
//		else
//		{
//			printf("相等\n");
//		}
//
//	}
//	return 0;
//}

//int main()
//{
//	int i = 0;
//	for (i = 1; i <= 100; i++)
//	{
//		if (i % 3 == 0)
//		{
//           printf("%d ", i);
//		}
//		
//	}
//	return 0;
//}

//int main()
//{
//	int i = 0;
//	for (i = 3; i <= 100; i += 3)
//	{
//		printf("%d ", i);
//	}
//}

//int main()
//{
//	int a = 0;
//	int b = 0;
//	scanf("%d %d", &a, &b);//24 18
//	int ret = ((a > b) ? b : a);
//	while (1)
//	{
//		if (a % ret == 0 && b % ret == 0)
//		{
//			break;
//		}
//		ret--;
//	}
//	printf("%d\n", ret);
//	return 0;
//}

//int main()
//{
//	//辗转相除法
//	int a = 0;
//	int b = 0;
//	int m = 0;
//	scanf("%d %d", &a, &b);//24 18
//	int ret = ((a > b) ? b : a);
//	while (m = a % b)
//	{
//		a = b;
//		b = m;
//	}
//	printf("%d\n", b);
//	return 0;
//}

//int main()
//{
//	int i = 0;
//	double sum = 0;
//	int flag = 1;
//	for (i = 1; i < 100; i++)
//	{
//		sum = sum + flag * (1.0 / i);
//		flag = -flag;
//	}
//	printf("%lf\n", sum);
//	return 0;
//}

//int main()
//{
//	char arr[10] = { -1,-2,-3,-4,-5,-6,-7,-8,9,-10 };
//	int MAX = arr[0];//假设最大值是第一个元素
//	int i = 0;
//	for (i = 1; i < 10; i++)
//	{
//		if (MAX < arr[i])
//		{
//			MAX = arr[i];
//		}
//	}
//	printf("%d\n", MAX);
//	return 0;
//}

//9*9乘法表
//int main()
//{
//	int i = 0;
//	for (i = 1; i <= 9; i++)
//	{
//		int j = 0;
//		for (j = 1; j <= i; j++)
//		{
//			printf("%d*%d=%2d ", i, j, i * j);
//		}
//		printf("\n");
//
//	}
//	return 0;
//}

//2023_1_8
//11集_数组习题
//给一堆数字，转换成对应的ASCLL码值
//int main()
//{
//	char arr[] = { 73,32,99,97,110,32,100,111,32,105,116,33 };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	int i = 0;
//	for (i=0;i<sz;i++)
//	{
//		printf("%c", arr[i]);
//	}
//	return 0;
//}


//电梯问题上去12人需要2min
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	printf("%d\n", ((n / 12) * 4 + 2));
//}

//多组输入把大写字母转换成小写字母
//int main()
//{
//	int ch = 0;
//	while ((ch = getchar()) != EOF)
//	{
//		getchar();
//		if (ch >= 'A' && ch <= 'Z')
//		{
//			ch += 32;
//		}
//		printf("%c\n", ch);
//	}
//	return 0;
//}

//多组输入，把大写字母转换成小写字母
//int main()
//{
//	int n = 0;
//	scanf("%d\n", &n);
//	while ((n = getchar()) != EOF)
//	{
//		getchar();
//		if (n >= 'A' && n <= 'Z')
//		{
//			n += 32;
//		}
//		printf("%c\n", n);
//	}
//	return 0;
//}

//函数调用的时候，返回两个值
//void test(int arr[])
//{
//	int x = 10;
//	int y = 20;
//	arr[0] = x;
//	arr[1] = y;
//}
//int main()
//{
//	int arr[2] = { 0 };
//	test(arr);
//}

//函数调用：返回两个整形值，用指针
//void test(int* pa, int* pb)
//{
//	int x = 10;
//	int y = 20;
//
//	*pa = x;
//	*pb = y;
//}
//int main()
//{
//	int a = 0;
//	int b = 0;
//	test(&a, &b);
//	return 0;
//}


//使用全局变量传两个整形值
//int g_a = 0;
//int g_b = 0;
//void test()
//{
//	int x = 10;
//	int y = 20;
//	g_a = x;
//	g_b = y;
//}
//int main()
//{
//	int a = 0;
//	int b = 0;
//	test();
//	a = g_a;
//	b = g_b;
//	return 0;
//}


//输入一个数字n：打印n*n的乘法表
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	int i = 0;
//	for (i = 1; i <= n; i++)
//	{
//		int j = 0;
//		for (j = 1; j <= i; j++)
//		{
//			printf(" %d*%d=%2d ", i, j, i * j);
//		}
//		printf("\n");
//	}
//}


//运用函数：实现输入一个数字，打印n*n的乘法表
//void print_table(int n)
//{
//	int i = 0;
//	for (i = 1; i <= n; i++)
//	{
//		int j = 0;
//		for (j = 1; j <= i; j++)
//		{
//			printf(" %d*%d=%2d ", i, j, i * j);
//		}
//		printf("\n");
//	}
//}
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	print_table(n);
//	return 0;
//}

//写一个函数（非递归）的方法逆序打印一个字符串
//void reverse_string(char* str)
//{
//	int len = strlen(str);
//	char* left = str;
//	char* right = str + len - 1;
//	while (left < right)
//	{
//		char tmp = *left;
//		*left = *right;
//		*right = tmp;
//		left++;//地址
//		right--;//地址
//	}
//}
//int main()
//{
//	char arr[] = "abcdef";
//	reverse_string(arr);
//	printf("%s\n", arr);
//	return 0;
//}


////写一个函数（非递归）实现逆序字符串
//void severse_string(char* str)
//{
//	int len = strlen(str);
//	char* left = str;
//	char* right = str + len - 1;
//	while (left < right)
//	{
//		char tmp = *left;
//		*left = *right;
//		*right = tmp;
//		left++;
//		right--;
//	}
//}
//int main()
//{
//	char arr[] = "abcdef";
//	severse_string(arr);
//	printf("%s\n", arr);
//	return 0;
//}

//void severse_string(char* str)
//{
//	int len = strlen(str);
//	char* left = str;
//	char* right = str + len - 1;
//	while (left < right)
//	{
//		char tmp = *left;
//		*left = *right;
//		*right = tmp;
//		left++;
//		right--;
//	}
//}
//int main()
//{
//	char arr[] = "abcdef";
//	severse_string(arr);
//	printf("%s\n", arr);
//	return 0;
//}


 //用数组函数的方法（非递归）实现字符串的逆序打印
//void severse_string(char arr[])
//{
//	int len = strlen(arr);
//	int left = 0;
//	int right = len - 1;
//	while (left < right)
//	{
//		char tmp = arr[left];
//		arr[left] = arr[right];
//		arr[right] = tmp;
//		left++;
//		right--;
//	}
//}
//int main()
//{
//	char arr[] = "abcdef";
//	severse_string(arr);
//	printf("%s\n", arr);
//	return 0;
//}

//用递归的（函数）的方法实现对字符串的逆序打印
//void reverse_string(char* str)
//{
//	int len = strlen(str);
//	char tmp = *str;
//	*str = *(str + len - 1);
//	*(str + len - 1) = '\0';
//
//	if ((strlen(str + 1)) >= 2)
//	{
//		reverse_string(str + 1);
//	}
//	*(str + len - 1) = tmp;
//}
//int main()
//{
//	char arr[] = "abcdef";
//	reverse_string(arr);
//	printf("%s\n", arr);
//	return 0;
//}


//用函数递归的方法实现对字符串的逆序打印
void reverse_string(char* str)
{
	int len = strlen(str);
	char tmp = *str;
	*str = *(str + len - 1);
	*(str + len - 1) = '\0';

	if ((strlen(str + 1)) >= 2)
		reverse_string(str + 1);

	*(str + len - 1) = tmp;
}
int main()
{
	char arr[] = "abcdef";
	reverse_string(arr);
	printf("%s\n", arr);
	return 0;
}


//运用函数递归的写法实现字符串的逆序打印
 /*void reverse_string(char* str)
{
	int len = strlen(str);
	char tmp = *str;
	*str = *(str + len - 1);
	*(str + len - 1) = '\0';

	if ((strlen(str + 1)) >= 2)
		reverse_string(str + 1);
	*(str + len - 1) = tmp;
}
int main()
{
	char arr[] = "abcdef";
	reverse_string(arr);
	printf("%s\n", arr);
	return 0;
}*/

//int DigitSum(unsigned int n)
//{
//	if (n > 9)
//	{
//		return DigitSum(n / 10) + n % 10;
//	}
//	else
//	{
//		return n;
//	}
//}
//int main()
//{
//	unsigned int num = 0;
//	scanf("%d", &num);
//	int ret = DigitSum(num);
//	printf("%d\n", ret);
//	return 0;
//}

//输入两个数求n的k次方
//double my_pow(int n, int k)
//{
//	if (k > 0)
//	{
//		return n * my_pow(n,k - 1);
//	}
//	else if (k == 0)
//	{
//		return 1;
//	}
//	else
//	{
//		return 1.0 / my_pow(n, -k);
//	}
//}
//int main()
//{
//	int n = 0;
//	int k = 0;
//	scanf("%d %d", &n, &k);
//	double ret = my_pow(n, k);
//	printf("%lf\n", ret);
//	return 0;
//}

//int main()
//{
//	char arr[] = "abc";
//	char arr1[] = { 'a','b','c' };
//	return 0;
//}

//实现两个函数：print和Init初始化一个一维数组
//void Init(int arr[], int sz)
//{
//	int i = 0;
//	for (i = 0; i < sz; i++)
//	{
//		arr[i] = 0;
//	}
//}
//void print(int arr[], int sz)
//{
//	int i = 0;
//	for (i = 0; i < sz; i++)
//	{
//		printf("%d ", arr[i]);
//	}
//	printf("\n");
//}
//int main()
//{
//	int arr[] = { 1,2,3,4,5 };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	//初始化之前打印一次
//	print(arr, sz);
//	Init(arr, sz);
//	//初始化之后再打印一次
//	print(arr, sz);
//	return 0;
//}

//写一个函数打印和对数字进行逆序打印
//void reverse(int arr[], int sz)
//{
//	int left = 0;
//	int right = sz - 1;
//	while (left < right)
//	{
//		int tmp = arr[left];
//		arr[left] = arr[right];
//		arr[right] = tmp;
//		left++;
//		right--;
//	}
//}
//void print(int arr[], int sz)
//{
//	int i = 0;
//	for (i = 0; i < sz; i++)
//	{
//		printf("%d ", arr[i]);
//	}
//	printf("\n");
//}
//int main()
//{
//	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	print(arr, sz);//逆序之前打印一次
//	reverse(arr, sz);
//	print(arr, sz);//逆序之后打印一次
//	return 0;
//}

//对两个相同长度的字符串进行交换
//int main()
//{
//	int arr1[5] = { 1,2,3,4,5 };
//	int arr2[5] = { 6,7,8,9,10 };
//	int sz = sizeof(arr1) / sizeof(arr1[0]);
//	int i = 0;
//	for (i = 0; i < sz; i++)
//	{
//		int tmp = arr1[i]; 
//		arr1[i] = arr2[i];
//		arr2[i] = tmp;
//	}
//}


//求一个二进制中1的个数
//int main()
//{
//	int a = 0;
//	scanf("%d", &a);
//	int count = 0;
//	int i = 0;
//	for (i = 0; i < 32; i++)
//	{
//		if (1 == ((a >> i) & 1))
//		{
//			count++;
//		}
//	}
//	printf("%d\n", count);
//	return 0;
//}

//求一个二级制中1的个数
//int main()
//{
//	int num = 0;
//	scanf("%d", &num);
//	int i = 0;
//	int count = 0;
//	for (i = 0; i < 32; i++)
//	{
//		if (1 == ((num >> i) & 1))
//		{
//			count++;
//		}
//	}
//	printf("%d\n", count);
//	return 0;
//}


//结构体的打印方式
//struct stu
//{
//	char name[20];
//	int age;
//	float weight;
//};
//void print(struct stu ss)
//{
//	printf("%s %d %f\n", ss.name, ss.age, ss.weight);
//}
//void print1(struct stu* sss)
//{
//	printf("%s %d %f\n", (*sss).name, (*sss).age, (*sss).weight);
//}
//int main()
//{
//	struct stu s = { "张三",12,90.5f };
//	print(s);
//	print1(&s);
//	return 0;
//}

//结构体的打印方式
//struct stu
//{
//	char name[20];
//	int age;
//	float weight;
//};
//int main()
//{
//	struct stu s={"张}
//}

//int main()
//{
//	int a = 1;
//	int b = (++a) + (++a) + (++a);
//	printf("%d\n", a = b);
//	return 0;
//}

//int main()
//{
//	int a = 0x11223344;
//	int* pa = &a;
//	*pa = 0;
//	return 0;
//}

//用int和char操作内存
//int main()
//{
//	int arr[10] = { 0 };
//	char* pa = (char*)arr;
//	int i = 0;
//	for (i = 0; i < 40; i++)
//	{
//		*pa = 'X';
//		pa++;
//	}
//}

//int main()
//{
//	int arr[10] = { 0 };
//	int* pa = arr;
//	int i = 0;
//	for (i = 0; i < 10; i++)
//	{
//		*pa = "0x11223344";
//		pa++;
//	}
//}


//用指针-指针的方法模拟实现strlen函数
//int my_strlen(char* str)
//{
//	char* start = str;
//	while (*str)
//	{
//		str++;
//	}
//	return str - start;
//}
//int main()
//{
//	char arr[] = "abcdef";
//	int len = my_strlen(arr);
//	printf("%d\n", len);
//	return 0;
//}

//int main()
//{
//	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
//	int* p = arr;
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	int i = 0;
//	for (i = 0; i < sz; i++)
//	{
//		printf("%d ", *(p + i));
//	}
//	return 0;
//}

//指针数组的使用
//int main()
//{
//	int a = 10;
//	int b = 12;
//	int c = 13;
//	int d = 15;
//	int e = 16;
//	int* arr[5] = { &a,&b,&c,&d,&e };
//	int i = 0;
//	for (i = 0; i < 5; i++)
//	{
//		printf("%d ", *(arr[i]));//arr[i]是地址，必须*解引用后使用
//	}
//}

//指针数组的真正使用方法
//int main()
//{
//	int data1[] = { 1,2,3,4,5 };
//	int data2[] = { 2,3,4,5,6 };
//	int data3[] = { 3,4,5,6,7 };
//	int* arr[3] = { data1,data2,data3 };
//	int i = 0;
//	for (i = 0; i < 3; i++)
//	{
//		int j = 0;
//		for (j = 0; j < 5; j++)
//		{
//			//printf("%d ", arr[i][j]);
//			printf("%d ", *(arr[i] + j));
//		}
//		printf("\n");
//	}
//	return 0;
//}


//-----------------------------//
//-          2023-1-16     ----//
//-----------------------------//

//
//int main()
//{
//	printf("hello");
//}

//int main()
//{
//	printf("hello");
//}

//int main()
//{
//	printf("hello");
//}

//int main()
//{
//	printf("hello");
//}

//int main()
//{
//	printf("hello");
//}

//int main()
//{
//	printf("hello");
//}

//int main()
//{
//	printf("hello");
//}

//int main()
//{
//	printf("hello");
//}

//int main()
//{
//	printf("hello");
//}


//int main()
//{
//	int i = 0;
//	for (i = 0; i < 10; i++)
//	{
//		printf("name:%s file:%s line:%d date:%s time:%s i=%d\n", __func__, __FILE__, __LINE__,__TIME__ ,i);
//	}
//}

//#define STR "abcdrf";
//
//int main()
//{
//	int num = 0;
//	if (1)
//	{
//		num = STR;
//	}
//	else
//	{
//		num = -1;
//	}
//	return 0;
//}
//int r=a+1*a+1;

//#define SQUARE(x) x*x
//
//int main()
//{
//	int a = 9;
//	int r = SQUARE(a + 1);
//	printf("%d\n", r);
//	return 0;
//}

//int main()
//{
//	printf("hello world\n");
//	printf("hello ""world\n");
//	return 0;
//}


////定义一个宏，输出a=20；pai=3.14
//int main()
//{
//	int a = 20;
//	double pai = 3.14;
//
//	PRINT(a, "%d");
//	PRINT(pai, "%lf");
//	return 0;
//}


//#define CAT(name,num) name##num
//
//int main()
//{
//	int helloworld = 666;
//	printf("%d\n", CAT(hello, world));
//	return 0;
//}


//#define MAX(x,y) ((x)>(y)?(x):(y))
//
//int main()
//{
//	int a = 5;
//	int b = 8;
//	int c = MAX(a++, b++);
//	printf("c=%d\n", c);
//	printf("a=%d\n", a);
//	printf("b=%d\n", b);
//	return 0;
//}

//#define MALLOC(num ,type) (type*)malloc(num*sizeof(type))
//
//int main()
//{
//	int* p = (int*)malloc(10 * sizeof(int));
//	int* p2 = MALLOC(10, int);
//	//int* p2=(int*)malloc(10 * sizeof(int));
//#undef MALLOC
//	MALLOC(20, char);
//	return 0;
//}


//#define NUM 2
//int main()
//{
//#if NUM==1
//	printf("hehe\n");
//#elif NUM==2
//	printf("haha\n");
//#else
//	printf("heihei\n");
//#endif
//	return 0;
//}

//#define MAX 0
//int main()
//{
//#ifdef MAX
//	printf("hehe\n");
//#endif
//}

